home *** CD-ROM | disk | FTP | other *** search
/ Revolution - Das Atari CD Magazin 1997 / Revolution - Das Atari CD Magazin 1.iso / software / anwendng / qed_397 / sourcen / memory.h < prev    next >
C/C++ Source or Header  |  1996-10-01  |  2KB  |  77 lines

  1. #ifndef _qed_memory_h_
  2. #define _qed_memory_h_
  3.  
  4. #define NEXT(x)        (x=x->nachf)
  5. #define VORG(x)        (x=x->vorg)
  6. #define TEXT(x)        ((UBYTE *)(x) + sizeof(ZEILE))
  7. #define IS_FIRST(x)    ((x->vorg->info&HEAD)!=0)
  8. #define IS_LAST(x)    ((x->nachf->info&TAIL)!=0)
  9. #define IS_HEAD(x)    ((x->info&HEAD)!=0)
  10. #define IS_TAIL(x)    ((x->info&TAIL)!=0)
  11. #define FIRST(x)        ((x)->head.nachf)
  12. #define LAST(x)        ((x)->tail.vorg)
  13.  
  14. /* Ein Text ist als doppelt verkettete Liste implementiert    */
  15. /* Am Anfang und Ende befindet sich je ein Zeilenkopf der   */
  16. /* auf NULL zeigt                        */
  17.  
  18. /*
  19.  * Maximale Länge einer Zeile.
  20.  * Wenn man die verändert -> MAX_ANZ in memory.c!!
  21.  */
  22. #define MAX_LINE_LEN    255
  23.  
  24.  
  25. #define MARKED        1
  26. #define HEAD        8
  27. #define TAIL        16
  28. #define ABSATZ        128
  29.  
  30. typedef struct tzeile
  31. {
  32.     struct    tzeile *vorg;            /*  4 Bytes */
  33.     struct    tzeile *nachf;            /*  4 Bytes */
  34.     UBYTE        info;                        /*  1 Byte  */
  35.     UBYTE        len;                        /*  1 Byte  */
  36. } ZEILE, *ZEILENPTR, *LINEP;        /* 10 Bytes */
  37.  
  38. typedef struct
  39. {
  40.     ZEILE     head;
  41.     ZEILE     tail;
  42.     LONG      lines;
  43.     WORD        longest_len;            /* Länge der längsten Zeile (0..255) */
  44. } RING, *RINGPTR, *RINGP;
  45.  
  46.  
  47. typedef enum {tos, unix, apple, binmode} LineEnding;
  48.  
  49.  
  50. LINEP        col_insert        (LINEP wo, LINEP was);
  51. VOID        col_append        (RINGP t, LINEP was);
  52. VOID        col_delete        (LINEP wo);
  53. VOID        col_concate        (LINEP *wo);
  54. VOID        col_split        (LINEP *col,WORD pos);
  55. LINEP     new_col_w        (CONST UBYTE *str, WORD l);
  56. LINEP     new_col_b        (CONST UBYTE *str, WORD l);
  57. VOID        free_col            (LINEP col);
  58. VOID        INSERT            (LINEP *a, WORD pos, WORD delta, CONST UBYTE *str);
  59. UBYTE        *REALLOC            (LINEP *a, WORD pos, WORD delta);
  60. LINEP     get_line            (RINGP r, LONG y);
  61. WORD        get_longest_len(RINGP r);
  62.  
  63. VOID        init_textring    (RINGP r);
  64. LONG        textring_bytes    (RINGP r, LineEnding ending);
  65. VOID        free_textring    (RINGP r);
  66. VOID        kill_textring    (RINGP r);
  67. BOOLEAN    doppeln            (RINGP old, RINGP new);
  68. BOOLEAN    ist_leer            (RINGP r);
  69.  
  70. VOID        kill_memory        (VOID);
  71. BOOLEAN    is_mem_free        (VOID);        /* Ohne Meldung */
  72. BOOLEAN    ist_mem_frei    (VOID);        /* Mit Meldung */
  73.  
  74. VOID        init_memory        (VOID);
  75.  
  76. #endif
  77.